/* 
 *	Copyright (C) 2009-2010 miaohua
 *	http://code.google.com/p/lrcshower/
 *
 *  This Program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2, or (at your option)
 *  any later version.
 *   
 *  This Program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 *  GNU General Public License for more details.
 *   
 *  You should have received a copy of the GNU General Public License
 *  along with GNU Make; see the file COPYING.  If not, write to
 *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. 
 *  http://www.gnu.org/copyleft/gpl.html
 *
 */

#pragma once
#include "TypeDef.h"

// Struct FilterDeskSetting is used to hold parameters for the filter & desktop lrc shower
// it also has functions to serialization and deserialization
// Now, I just implements serialization to and from reg, xml hasn't been implemented
struct FilterDeskSetting
{    
      // Constructor and destructor
      FilterDeskSetting(const tstring & RegPath);
	  ~FilterDeskSetting();
      // Serialize to and deserialize from window's reg
	  bool SerializeToReg();
	  bool DeserializeFromReg();
      // Serialize to and deserialize from xml file(not be implemented)
	  bool SerializeToXML();
	  bool DeserializeFromXML();
      // Set defualt value for data member
	  void SetDefaultVal();

      //tstring m_LrcFileFullPath;             // Full path of lrc file
      bool m_KaraokeMode;                    // Set karaoke or not
      bool m_ShadowMode;                     // Show lrc with shadow or not
      bool m_OutlineMode;                    // Show lrc with outline or not
      bool m_TopMostMode;                    // Show lrc topmost or not
      bool m_WinTransMode;                   // Show lrc transparent or not(in transparent mode, the mouse can penetrates it)
      BYTE m_BgTransparent;                  // Transparent of background
      BYTE m_LrcTransparent;                 // Transparent of lrc
	  COLORREF m_BgClr;                      // Color of background 
	  COLORREF m_UnFocusClr[3];              // Color of focus part
      int m_UnFocusClrNum;                   // Number of color for focus part(1 to 3)
	  COLORREF m_FocusClr[3];                // Color of unfocus part
      int m_FocusClrNum;                     // Number of color for unfocus part(1 to 3)
	  LOGFONT  m_LrcFont;                    // Font for lrc
      //bool m_DeskShow;                       // It is lrc desktop show mode or window show mode
      tstring m_RegPath;                     // Parameters save & load windows register path
};



